package com.lingxiaoti.hmbratelimiter.core.annotation;

import com.lingxiaoti.hmbratelimiter.core.enums.LimitType;

import java.lang.annotation.*;


/**
 * 限流注解
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RateLimit {


    /**
     * 限流标识名
     *
     * @return
     */
    String name() default "";

    /**
     * 限流持续时间
     *
     * @return 秒
     */
    int duration() default 60;

    /**
     * 限制数量（限流次数）
     *
     * @return 次
     */
    int limit() default 20;

    /**
     * 限流类型，默认策略全局限流
     * @return
     */
    LimitType limitType() default LimitType.DEFAULT;

}
